package com.mall.pay.service;

import com.alipay.api.AlipayApiException;
import com.mall.api.pay.dto.PayDTO;
import com.mall.pay.domain.dto.NotifyDTO;
import com.mall.pay.domain.po.PayInfo;
import com.mall.pay.domain.po.PayInfoResult;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface IPayService {

    /**
     * 支付接口
     * @param payDTO
     * @return
     * @throws AlipayApiException
     */
    String pay(PayDTO payDTO) throws AlipayApiException;


    /**
     * 通知回调接口
     * @param notifyDTO
     * @return
     * @throws AlipayApiException
     */
    String payNotify(NotifyDTO notifyDTO) throws Exception;


    /**
     * 根据订单支付记录id获取订单支付记录
     *
     * @param payId 订单支付记录id
     * @return 订单支付记录
     */
    PayInfo getByPayId(Long payId);

    /**
     * 标记为支付成功
     * @param payInfoResult 支付信息
     * @param orderIds 订单ids
     */
    void paySuccess(PayInfoResult payInfoResult, List<Long> orderIds);

    /**
     * 根据支付订单号获取订单支付状态
     * @param orderIds 订单号ids
     * @return 支付状态
     */
    Integer getPayStatusByOrderIds(String orderIds);

    /**
     * 查询订单是否已经支付
     * @param orderIds 订单id
     * @param userId 用户id
     * @return 是否已经支付
     */
    Integer isPay(String orderIds, Long userId);

}
